<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //Promise.all能实现异步请求的并发操作，全部成功才算成功，只要有一个失败才最终就失败了。这个方法不能满足实际项目中发生的所有场景，只能满足部分，所以对all方法的使用场景做了一些补充。
        //补充了race方法。any方法，allSettle方法
        //race赛跑
          const p1 = new Promise((res,rej) => {
           axios.get().then(res => {
                
               if(Math.random() > 0.5){
                    
                    res('第一个成功异步请求，延迟500ms')
                    console.log('第一个成功异步请求，延迟500ms');
               }else{
                    rej('第一个失败异步请求，延迟500ms');
                    console.log('第一个失败异步请求，延迟500ms');
               }
           })
          
        })
        const p2 = new Promise((res,rej) => {
            setTimeout(() =>{
                if(Math.random() > 0.5){
                    res('第二个成功异步请求，延迟1000ms');
                    console.log('第二个成功异步请求，延迟1000ms');
               }else{
                    rej('第二个失败异步请求，延迟1000ms');
                    console.log('第二个失败异步请求，延迟1000ms');
               }
            },1000)
        })
        const p3 = new Promise((res,rej) => {
            setTimeout(() =>{
                if(Math.random() > 0.5){
                    res('第三个成功异步请求，延迟2000ms');
                    console.log('第三个成功异步请求，延迟2000ms');
               }else{
                    rej('第三个失败异步请求，延迟2000ms');
                    console.log('第三个失败异步请求，延迟2000ms');
               }
            },2000)
        })
        // 静态方法
        Promise.race([p1,p2,p3]).then(ber => {
            console.log(ber);
        }).catch( jer => {
            console.log(jer);
        })
    </script>
</body>
</html>